#ifndef NctiWindowPlatform_H
#define NctiWindowPlatform_H
#include "NctiWindowObject.h"
namespace NCTI
{
    class NctiDocument;
	class NctiWindowViewManager;
	/**
	* @brief manager all the NctiWindowViewManager
	* @see NctiWindowObject
	*/
	class DECL_NCTI_WINDOW NctiWindowPlatform : public NctiWindowObject
	{
	public:
		NctiWindowPlatform(NctiWindowObject* i_pParent = nullptr);
		virtual ~NctiWindowPlatform();
		/**
	   * @brief get the current view manager
	   * @return NctiWindowViewManager*
	   */
		NctiWindowViewManager* GetCurrentViewManager();
		/**
	   * @brief create view manager
	   * @param[in] i_docid, the Document ID
	   */
		void CreateViewManager(NctiDocument* i_doc);
		/**
	   * @brief set current view
	   * @param[in] i_docid, the Document ID
	   */
		void setCurrentView(Ncti_Integer i_docid);
		/**
	   * @brief implement the resize function event
	   * @param[in] i_event, NctiWindowResizeEvent
	   */
		void resizeEvent(NctiWindowResizeEvent* i_event) override;
		/**
	   * @brief close the current view
	   */
		void CloseCurrentView();
		/**
	   * @brief Initialization when the whole system load
	   */
		static NctiErrorType InitCAD(const Ncti_Char* path = nullptr);
		/**
	   * @brief release when the whole system unload
	   */
		static Ncti_Integer ReleaseCAD();
    private:
		Ncti_Integer m_CurrentViewManager=-1;
	};
}
#endif
